package com.lxw.api.course;

import com.lxw.framework.domain.course.CoursePic;
import com.lxw.framework.domain.course.Teachplan;
import com.lxw.framework.domain.course.TeachplanMedia;
import com.lxw.framework.domain.course.ext.CourseView;
import com.lxw.framework.domain.course.ext.TeachplanNode;
import com.lxw.framework.domain.course.request.CourseListRequest;
import com.lxw.framework.domain.course.response.CoursePublishResult;
import com.lxw.framework.model.response.QueryResponseResult;
import com.lxw.framework.model.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(value="课程管理Controller",description = "负责课程管理增删改查,课程计划,营销信息,课程图片等功能")
public interface CourseControllerApi {

    @ApiOperation("根据课程Id获取课程计划信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程Id",name = "courseId",paramType = "path",dataType = "String",required = true)
    })
    public TeachplanNode findTeachPlanByCourseId(String courseId);

    @ApiOperation("添加课程计划信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程计划对象",name = "teachplan",dataType = "Teachplan",required = true)
    })
    public ResponseResult addTeachPlan(Teachplan teachplan);

//    @ApiOperation("查询我的课程列表")
//    @ApiImplicitParams({
//            @ApiImplicitParam(value = "页码",name = "page",paramType = "path",dataType = "Teachplan",required = true),
//            @ApiImplicitParam(value = "尺寸",name = "size",paramType = "path",dataType = "Teachplan",required = true),
//            @ApiImplicitParam(value = "课程列表",name = "courseListRequest",paramType = "body",dataType = "CourseListRequest")
//    })
//    public QueryResponseResult findCourseList(int page, int size, CourseListRequest courseListRequest);



    @ApiOperation("添加课程图片信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "courseId",dataType = "String",required = true),
            @ApiImplicitParam(value = "文件id",name = "fileId",dataType = "String",required = true)
    })
    public ResponseResult addCoursePic(String courseId,String fileId);

    @ApiOperation("根据课程Id获取课程图片信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "courseId",dataType = "String",required = true)
    })
    public CoursePic findCoursePicByCourseId(String courseId);

    @ApiOperation("根据课程Id删除课程图片信息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "courseId",dataType = "String",required = true)
    })
    public ResponseResult deleteCoursePicByCourseId(String courseId);

    @ApiOperation("课程详情页面模型数据查询")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "id",paramType = "path",dataType = "String",required = true)
    })
    public CourseView courseview(String id);

    @ApiOperation("生成预览课程详情url")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "id",paramType = "path",dataType = "String",required = true)
    })
    public CoursePublishResult preview(String id);

    @ApiOperation("发布课程")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程id",name = "id",paramType = "path",dataType = "String",required = true)
    })
    public  CoursePublishResult  publish( String  id);

    @ApiOperation("保存课程计划与视频的关联关系")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课程计划与视频的关联对象",name = "teachplanMedia",dataType = "TeachplanMedia",required = true)
    })
    public  ResponseResult  saveTeachMedia(TeachplanMedia teachplanMedia);

}
